// 在ts中，接口就是对对象或者数组进行的，属性值的类型定义。
// 接口中的属性之间可以写分号 、逗号或者不写
// interface Iuser { // 接口
//   name: string,
//   age: number,
//   ext?: string, // 可选属性（可选属性名，在对象中使用的时候，也必须和接口的属性名保持一致）
//   [prop:string]: string | number | undefined // 任意属性 
// }
// // 使用Iuser接口描述 obj
// let obj:Iuser = {
//   name: '张三',
//   age: 18,
//   genner: 'dfghjk',
//   rty: 'dfghjk',
//   sdfghjk:'fghjk'
// };
// console.log(obj);

// // 使用Iuser接口描述obj1

// let obj1:Iuser = {
//     name: '李四',
//     age: 28,
//     ext: '貌美如花',
//     genner: 'dfghjk'
// }
// console.log(obj1);



// interface Iuser {
//     readonly id: string, // id为只读属性(一单声明不允许改变)
//     name: string
//     age: number
//     gender?: string,
//     [prop:string]:string|number|undefined
// }

// let obj:Iuser = {
//   id: '33',
//   name: '王五',
//   age: 18
// }
// // obj.id = '30';
// obj.name = '马六';
// console.log(obj);




// 原生 ajax 请求

// // 1.实例化ajax核心方法
// let ajax = new XMLHttpRequest()
// // 2.建立连接 open('请求方式','请求连接'，同步或者异步) (true 默认是异步 false 同步)
// ajax.open('get','https://api.it120.cc/small4/cms/news/list',true)
// // 3.ajax状态判断
// // ready 有准备的意思，state 有状态的意思，change 是改变
// ajax.onreadystatechange = function(){
//     // readyState 是状态码 有五个 0，1，2，3，4(4代表任务完成)
//     // status 也是一个状态码 常见的有两个 200（代表成功） 404 （失败或者是资源不存在）
//     //  response 就是后端返回的数据
//     //  console.log(ajax.readyState);
//     //  console.log(ajax.status);


//     if(ajax.status==200 && ajax.readyState==4){
//         console.log(ajax.response);
//     }
// }
// // 4.发送请求
// ajax.send()

interface IParams {
    method: string // 请求方式
    url: string // 请求地址
    data?: any // 请求参数(可选参数)
}

function request(params: IParams) {
    return new Promise((resolve,reject) => {
        let ajax = new XMLHttpRequest()
        ajax.open(params.method, params.url)
        ajax.onreadystatechange = function () {
            if (ajax.status == 200 && ajax.readyState == 4) {
                // console.log(JSON.parse(ajax.response))
                resolve(JSON.parse(ajax.response))
            } else if (ajax.status == 404 && ajax.readyState == 4){
                reject('失败');
            }
        }
        ajax.send(params.data)
    })
}
// console.log('123');
request({ method: 'get', url: 'https://api.it120.cc/small4/cms/news/list' }).then((res) => {
    console.log(res);
})
